题目链接:http://poj.org/problem?id=1029
明明是一道标记题,为啥被归到dp里去了,真是无解啊!
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<string>
#include<queue>
#include<algorithm>
#include<vector>
#include<stack>
#include<list>
#include<iostream>
#include<map>
using namespace std;
#define inf 0x3f3f3f3f
#define Max 110
int max(int a,int b)
{
return a>b?a:b;
}
int min(int a,int b)
{
return a<b?a:b;
}
int num[1010],flag[1100],vst[1100];
int main()
{
int n,k,p,i,j,count=0;
char op[2];
while(scanf("%d%d",&n,&k)!=EOF)
{
memset(flag,0,sizeof(flag));
memset(vst,0,sizeof(vst));
while(k--)
{
scanf("%d",&p);
for(i=0;i<2*p;i++)
{
scanf("%d",&num[i]);
// vst[num]++;
}
scanf("%s",op);
if(op[0]=='=')
{
for(i=0;i<2*p;i++)
flag[num[i]]=1;
}
else if(op[0]=='<')
{
for(i=0;i<p;i++)
vst[num[i]]++;
for(i=p;i<2*p;i++)
vst[num[i]]--;
count++;
}
else
{
for(i=0;i<p;i++)
{
vst[num[i]]--;
}
for(;i<2*p;i++)
vst[num[i]]++;
count++;
}
}
int maxn=0;
int ans=0,rec=0;
for(i=1;i<=n;i++)
{
if(!flag[i])
{
if(vst[i]>maxn)
maxn=vst[i];
}
}
for(i=1;i<=n;i++)
{
if(!flag[i])
{
if(vst[i]==count||vst[i]==-count)
{
rec++;
ans=i;
}
if(rec>=2)
{
ans=0;
break;
}
}
}
printf("%d\n",ans);
}
}