UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#212680#3828. BJackenCompile Error//C++1.8kb2024-10-20 09:29:352024-10-20 14:36:02

answer

#include<bits/stdc++.h>
using namespace std;
const int N = 2e5+5;
int n;
int a[N];
int f[N];
int dx[] = {0,0,1,-1};
int dy[] = {1,-1,0,0};
int m;
int dfs(int x,int y)
{
    if(f[(x-1)*m+y])
    {
        return f[(x-1)*m+y];
    }
    int ans = 0;
    for(int i = 0;i<4;i++)
    {
        int r = dx[i]+x,c = dy[i]+y;
        if(r<=n&&c<=m&&r>=1&&c>=1&&a[(x-1)*m+y]<a[(r-1)*m+c])
        {
            ans = max(dfs(r,c)+1,ans);
        }
    }
    return f[(x-1)*m+y] = ans;
}
int main()
{
	int _;
	scanf("%d",&_);
	while(_--)
	{
		scanf("%d %d",&n,&m);
	    for(int i = 1;i<=n;i++)
	    {
	        for(int j = 1;j<=m;j++)
	        {
	        	scanf("%d",&a[(i-1)*m+j]);
	        }
	    }
	    int maxx = 0;
	    int maxxx = 0;
	    memset(f,0,sizeof(f));
	    for(int i = 1;i<=n;i++)
	    {
	        for(int j = 1;j<=m;j++)
	        {
	        	int t = dfs(i,j);
	        	if(maxx<t||maxx == t&&a[(i-1)*m+j]<a[maxxx])
	        	{
	        		maxx = t;
	        		maxxx = (i-1)*m+j;
				}
	        }
	    }
	    printf("%d\n",maxx+1);
	    set<int>cd;
	    cd.insert(a[maxxx]);
	    int x = maxxx%m == 0?maxxx/m:maxxx/m+1,y = maxxx%m == 0?m:maxxx%m;\
	    while(f[(x-1)*m+y])
	    {
	    	int minn = 1e9;
	    	int minnr = 0;
	    	int minnc = 0;
	    	for(int i = 0;i<4;i++)
	    	{
	    		int r = x+dx[i],c = y+dy[i];
	    		if(r<1||r>n||c<1||c>m)
	    		{
	    			continue;
				}
				if(f[(r-1)*m+c] == f[(x-1)*m+y]-1&&a[(x-1)*m+y]<a[(r-1)*m+c])
				{
					if(minn>a[(r-1)*m+c])
					{
						minn = a[(r-1)*m+c];
						minnr = r;
						minnc = c;
					}
				}
			}
			x = minnr;
			y = minnc;
			cd.insert(minn);
		}
		for(auto it = cd.begin();it!=cd.end();it++)
		{
			printf("%d ",*it);
		}
		printf("\n");
	}
    return 0;
}

详细

answer.code: In function 'int main()':
answer.code:86:12: error: 'it' does not name a type
   for(auto it = cd.begin();it!=cd.end();it++)\x0d
            ^
answer.code:86:28: error: expected ';' before 'it'
   for(auto it = cd.begin();it!=cd.end();it++)\x0d
                            ^
answer.code:86:28: error: 'it' was not declared in this scope
answer.code:30:16: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d...