FJUTOJ

1279

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <queue>
#include <cmath>
#include <map>
#include <string>

using namespace std;
const int N=10000+5;

struct node
{
    char str[10];
    int deep;
}Node;
node s,e,now,tmp;

char str[10],ttr[10];

int vis[N]={0};
int use[10005]={0};

void get_prime()
{
    ///0 is prime
    int m=sqrt(N+0.5);
    for(int i=2;i<=m;i++)
    {
        if(!vis[i])
        {
            for(int j=i*i;j<=N;j+=i)
            {
                vis[j]=1;
            }
        }
    }
}

bool is_prime(char num[])
{
    int data=0;
    for(int i=0;i<4;i++)
    {
        data=data*10+num[i]-'0';
    }
    if(vis[data]==0)
    {
        vis[data]=1;///去重
        return 1;
    }
    return 0;
}

bool bfs()
{
    queue<node>que;
    que.push(s);
    while(!que.empty())
    {
        now=que.front();
        que.pop();
        if(!strcmp(now.str,e.str))
        {
            printf("%d\n",now.deep);
            return 1;
        }
        for(int i=0;i<4;i++)
        {
            strcpy(tmp.str,now.str);
            for(int j=0;j<=9;j++)
            {
                if(i==0&&j==0) continue;
                tmp.str[i]=j+'0';
                if(is_prime(tmp.str))
                {
                    tmp.deep=now.deep+1;
                    que.push(tmp);
                }
            }
        }
    }
    puts("Impossible");
    return 0;
}

int main()
{
    int t;
    while(~scanf("%d",&t))
    {
        while(t--)
        {
            memset(vis,0,sizeof(vis));
            get_prime();
            memset(use,0,sizeof(use));
            scanf("%s%s",s.str,e.str);
            s.deep=0;
            bfs();
        }
    }
    return 0;
}
View Code

 1332

太毒了,先按3*3 4*4 5*5 6*6 确定箱子数,在拿1*1 2*2填细节会少一点

#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

int box[7]={0};

int main()
{
    while(1)
    {
        box[0]=0;
        for(int i=1;i<=6;i++){
            scanf("%d",&box[i]);
            box[0]|=box[i];
        }
        if(!box[0]){
            break;
        }
        int ans=0;
        ans=(box[3]+3)/4+box[4]+box[5]+box[6];

        ///2
        int left=box[4]*5;
        if(box[3]%4==3){
            left++;
        }
        else if(box[3]%4==2){
            left+=3;
        }
        else if(box[3]%4==1){
            left+=5;
        }

        if(left<box[2]){
            ans+=(box[2]-left+8)/9;
        }

        ///1
        left=36*ans-36*box[6]-25*box[5]-16*box[4]-9*box[3]-4*box[2];
        if(left<box[1]){
            ans+=(box[1]-left+35)/36;
        }

        printf("%d\n",ans);
    }

    return 0;
}
View Code

 1008

#include <bits/stdc++.h>

using namespace std;

char str[1005][1005];
int pos=0,maxLen=0;

int main()
{
    while(gets(str[pos])){
        maxLen=max(maxLen,(int)strlen(str[pos++]));
    }

    //printf("max=%d\n",maxLen);
    for(int i=0;i<=maxLen+1;i++){
        printf("*");
    }
    puts("");
    int flag=1;
    for(int i=0;i<pos;i++)
    {
        int len=strlen(str[i]);
        int left=maxLen-len;
        int a,b;
        a=b=left/2;
        if(left&1){
            if(flag){
                a=a;
                flag=0;
            }
            else{
                a++;
                flag=1;
            }
        }
        b=left-a;
        //printf("[%d %d len=%d]\n",a,b,len);
        printf("*");
        while(a--)printf(" ");
        printf("%s",str[i]);
        while(b--)printf(" ");
        printf("*\n");
    }
    for(int i=0;i<=maxLen+1;i++){
        printf("*");
    }
    puts("");
    return 0;
}
/**
*    5     *4 5
*     5    *5 4
*  Round   *2 3
*  Round   *2 3
*/
View Code

 1205

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>

using namespace std;
const int maxn = 1005;

char str[maxn];

int main()
{
    while(~scanf("%s",str)&&str[0]!='0')
    {
        int num=0;
        int len=strlen(str);
        for(int i=0;i<len;i++){
            num=(num*10+str[i]-'0')%17;
        }
        if(num==0){
            puts("1");
        }
        else{
            puts("0");
        }
    }

    return 0;
}
View Code

 1955

#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

int main()
{
    int n,m;
    while(~scanf("%d%d",&n,&m)&&(n||m))
    {
        int s=0;
        for(int i=2;i<=n;i++)
        {
            s=(s+m)%i;
        }
        printf("%d %d %d\n",n,m,s+1);
    }

    return 0;
}
View Code

 1299

#include <cstdio>

int main()
{
    int t,s,u;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d%d",&s,&u);
        puts("1");
    }
}
View Code

 1210

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>

using namespace std;
const int maxn = 1005;

char str[maxn];

int main()
{
    while(~scanf("%s",str)){
        int ans=strlen(str);
        int a=-1,b=-1,c=-1;
        int len=strlen(str);
        for(int i=0;i<len;i++){
            if(str[i]=='a'){
                a=i;
                if(b!=-1&&c!=-1){
                    ans=min(ans,a-min(b,c)+1);
                }
            }
            else if(str[i]=='b'){
                b=i;
                if(a!=-1&&c!=-1){
                    ans=min(ans,b-min(a,c)+1);
                }
            }
            else if(str[i]=='c'){
                c=i;
                if(a!=-1&&b!=-1){
                    ans=min(ans,c-min(a,b)+1);
                }
            }
        }
        printf("%d\n",ans);
    }
    return 0;
}
View Code

 1208

#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;
const int maxn = 1005;

int n,m,arr[maxn][maxn],dp[maxn][maxn];

int main()
{
    while(~scanf("%d%d",&n,&m))
    {
        memset(arr,0,sizeof(arr));
        memset(dp,0,sizeof(dp));
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                scanf("%d",&arr[i][j]);
            }
        }
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                dp[i][j]=max(max(max(dp[i][j-1],dp[i-1][j]),dp[i-1][j]+arr[i][j]),dp[i][j-1]+arr[i][j]);
            }
        }
        printf("%d\n",dp[n][m]);
    }

    return 0;
}
View Code

 1202

#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;
const int maxn = 1e5+7;

long long t,n,m,x,y,arr[maxn];
long long toRight[maxn],toLeft[maxn];

int main()
{
    scanf("%I64d",&t);
    while(t--)
    {
        toRight[1]=0;
        scanf("%I64d%I64d",&n,&m);
        for(int i=2;i<=n;i++){
            scanf("%I64d",&arr[i]);
            toRight[i]=arr[i]+toRight[i-1];
        }
        for(int i=1;i<=m;i++)
        {
            scanf("%I64d%I64d",&x,&y);
            long long beginPos=(i-1)%n+1;
            long long ans=0;
            if(x<y){
                if(beginPos<=x){///b x y
                    ans=toRight[y]-toRight[beginPos];
                }
                else{///x b y
                    ans=2*toRight[n]-toRight[beginPos]+toRight[y];
                }
            }
            else{///y x
                ans=2*toRight[n]-toRight[beginPos]-toRight[y];
            }
            cout<<ans<<endl;
        }
    }

    return 0;
}
View Code

 2094

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <queue>

using namespace std;
const int maxn = 10;

int mp[maxn][maxn];
char str[5],ttr[5];

struct node
{
    int x,y,deep;
}s,e,tmp,now;

int Next[8][2]={-2,1,-2,-1,-1,2,-1,-2,2,1,2,-1,1,2,1,-2};

void bfs()
{
    queue<node>q;
    q.push(s);
    mp[s.x][s.y]=1;
    while(!q.empty())
    {
        now=q.front();
        q.pop();
        if(now.x==e.x&&now.y==e.y)
        {
            printf("To get from %s to %s takes %d knight moves.\n",str,ttr,now.deep);
            return ;
        }
        for(int i=0;i<8;i++)
        {
            int xx=now.x+Next[i][0];
            int yy=now.y+Next[i][1];
            if(xx<0||yy<0||xx>7||yy>7||mp[xx][yy]){
                continue;
            }
            tmp.x=xx;
            tmp.y=yy;
            tmp.deep=now.deep+1;
            q.push(tmp);
        }
    }
}

int main()
{
    while(~scanf("%s%s",str,ttr))
    {
        memset(mp,0,sizeof(mp));
        s.x=str[0]-'a';
        s.y=str[1]-'1';
        e.x=ttr[0]-'a';
        e.y=ttr[1]-'1';
        s.deep=0;
        bfs();
    }
    return 0;
}
View Code

 1237

#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <map>

using namespace std;
const int maxn = 1e5+7;

char str[maxn];
string s,t;
map<string,string>mmp;
map<string,string>::iterator it;

int main()
{
    while(gets(str))
    {
        if(str[0]==0){break;}
        for(int i=0;i<strlen(str);i++)
        {
            if(str[i]==' '){
                str[i]=0;
                i++;
                s=str;
                t=str+i;
                mmp[t]=s;
                break;
            }
        }
    }
    while(~scanf("%s",str))
    {
        if(mmp.count(str))
        {
            cout<<mmp.find(str)->second<<endl;
        }
        else{
            cout<<"eh"<<endl;
        }
    }

    return 0;
}
View Code

(11)

 

 

2092

#include <bits/stdc++.h>

using namespace std;
char mp[105][105];
int sum,mov[8][2]={-1,-1,-1,0,-1,1,0,1,0,-1,1,1,1,-1,1,0},n,m;

void dfs(int x,int y)
{
    if(!mp[x][y]||mp[x][y]=='*')
    {
        return ;
    }
    mp[x][y]='*';
    for(int i=0;i<8;i++)
    {
        dfs(x+mov[i][0],y+mov[i][1]);
    }
}

int main()
{
    while(~scanf("%d%d",&n,&m)&&n&&m)
    {
        sum=0;
        memset(mp,0,sizeof(mp));
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                cin>>mp[i][j];
            }
        }
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                if(mp[i][j]=='@')
                {
                    sum++;
                    dfs(i,j);
                }
            }
        }
        printf("%d\n",sum);
    }
    return 0;
}
View Code

 1446

#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
#include <vector>
#include <map>

using namespace std;
const int maxn = 1005;

int n,m,x;

vector<pair<int,int> >E[maxn];
int inq[maxn],dis[maxn];

void init()
{
    for(int i=1; i<=n; i++)
    {
        E[i].clear();
    }
}

int SPFA(int s,int t)
{
    int now;
    queue<int>q;
    q.push(s);
    dis[s]=0,inq[s]=1;
    while(!q.empty())
    {
        now=q.front();
        q.pop();
        inq[now]=0;
        for(int i=0;i<E[now].size();i++)
        {
            int to=E[now][i].first;
            if(dis[to]>dis[now]+E[now][i].second)
            {
                dis[to]=dis[now]+E[now][i].second;
                if(!inq[to]){
                    inq[to]=1;
                    q.push(to);
                }
            }
        }
    }
    return dis[t];
}

void show()
{
    for(int i=1; i<=n; i++)
    {
        for(int j=0; j<E[i].size(); j++)
        {
            printf("[%d %d] ",E[i][j].first,E[i][j].second);
        }
        puts("");
    }
}

int main()
{
    int u,v,w,ans;
    while(~scanf("%d%d%d",&n,&m,&x))
    {
        init();
        for(int i=1; i<=m; i++)
        {
            scanf("%d%d%d",&u,&v,&w);
            E[u].push_back(make_pair(v,w));
        }
        //show();
        ans=0;
        for(int i=1; i<=n; i++)
        {
            for(int j=0; j<maxn; j++)
            {
                inq[j]=0;
                dis[j]=1e9;
            }
            int To=SPFA(i,x);
            for(int j=0; j<maxn; j++)
            {
                inq[j]=0;
                dis[j]=1e9;
            }
            int Back=SPFA(x,i);
            ans=max(To+Back,ans);
        }
        printf("%d\n",ans);
    }

    return 0;
}
View Code

1409

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>

const int N=100000+5;
using namespace std;

int vis[N]={0};
void get_prime()
{
    int m=sqrt(N+0.5);
    for(int i=2;i<=m;i++)
    {
        if(!vis[i])
        {
            for(int j=i*i;j<=N;j+=i)
            {
                vis[j]=1;
            }
        }
    }
}
int main()
{
    get_prime();
    int num;
    int cas=1;
    while(~scanf("%d",&num))
    {
        if(num<=0){break;}
        printf("%d: ",cas++);
        if(num==1||num==2)puts("no");
        else if(vis[num])puts("no");
        else puts("yes");
    }
    return 0;
}
View Code

 1983

#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

int main()
{
    char str[105],ret[105]={0};
    scanf("%s",str);
    long long num=(str[0]-'0')*10000+(str[1]-'0')+(str[2]-'0')*1000+(str[3]-'0')*10+(str[4]-'0')*100;
    long long ans=1;
    for(int i=1;i<=5;i++){
        ans=(ans*num)%100000;
    }
    //cout<<ans<<endl;
    int pos=5;
    while(pos--)
    {
        ret[pos]=ans%10+'0';
        ans/=10;
    }
    printf("%s\n",ret);
    return 0;
}
View Code

 1240

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>

using namespace std;
const int maxn = 26;

int t,n;
char str[10000+7];

typedef struct Trie
{
    Trie *next[maxn];
    int v;
}Trie;

Trie *root;

void createTrie(char str[])
{
    int len=strlen(str);
    Trie *p=root,*q;
    for(int i=0;i<len;i++)
    {
        int id=str[i]-'0';
        if(p->next[id]==NULL)
        {
            q=(Trie*)malloc(sizeof(Trie));
            q->v=1;
            for(int j=0;j<maxn;j++){
                q->next[j]=NULL;
            }
            p->next[id]=q;
            p=p->next[id];
        }
        else
        {
            p->next[id]->v++;
            p=p->next[id];
        }
    }
    p->v=-1;
}

int findTrie(char str[])
{
    int len=strlen(str);
    Trie *p=root;
    for(int i=0;i<len;i++)
    {
        int id=str[i]-'0';
        p=p->next[id];
        if(p==NULL){    ///不存在前缀
            return 0;
        }
        if(p->v==-1){   ///字符集中已有串是此串的前缀
            return -1;
        }
    }
    return -1;          ///前缀
}

int dealTrie(Trie *T)
{
    if(T==NULL){
        return 0;
    }
    for(int i=0;i<maxn;i++){
        if(T->next[i]!=NULL){
            dealTrie(T->next[i]);
        }
    }
    free(T);
    return 0;
}

int main()
{
    while(~scanf("%d",&t))
    {
        while(t--)
        {
            int flag=0;
            root=(Trie*)malloc(sizeof(Trie));
            memset(root->next,0,sizeof(root->next));
            scanf("%d",&n);
            while(n--)
            {
                scanf("%s",str);
                if(findTrie(str)==-1){
                    flag=1;
                }
                if(!flag){
                    createTrie(str);
                }
            }
            if(flag){puts("NO");}
            else{puts("YES");}
            dealTrie(root);
        }
    }

    return 0;
}
View Code

1233

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <map>

using namespace std;
string s,t;
map<string,string>mmp;
map<string,string>::iterator it;

char str[3005],ttr[3005];

int main()
{
    while(gets(str))
    {
        if(!strcmp(str,"START")){continue;}
        if(!strcmp(str,"END")){break;}
        int len=strlen(str);
        for(int i=0;i<len;i++){
            if(str[i]==' '){
                str[i]='\0';
                s=str;
                t=str+i+1;
                mmp[t]=s;
                break;
            }
        }
    }
    while(gets(str))
    {
        if(!strcmp(str,"START")){continue;}
        if(!strcmp(str,"END")){break;}
        int len=strlen(str),pos=0;
        for(int i=0;i<len;i++){
            if(str[i]>='a'&&str[i]<='z')
            {
                ttr[pos++]=str[i];
            }
            else
            {
                ttr[pos]=0;
                if(mmp.count(ttr)){
                    cout<<mmp.find(ttr)->second;
                }
                else{
                    cout<<ttr;
                }
                printf("%c",str[i]);
                pos=0;
            }
        }
        puts("");
    }



    return 0;
}
View Code

 1821

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>

using namespace std;
const int maxn = 1005;

int main()
{
    char str[maxn];
    while(~scanf("%s",str))
    {
        int flag=0;
        for(int i=0;i<strlen(str);i++){
            if(str[i]=='.'&&str[i-1]=='9'){
                puts("GOTO Vasilisa.");
                flag=1;
                break;
            }
        }
        if(flag){continue;}
        for(int i=0;i<strlen(str);i++){
            if(str[i+1]=='.'){
                int num=str[i+2]-'0';
                if(num>=5){
                    str[i]++;
                }
                putchar(str[i]);
                break;
            }
            putchar(str[i]);
        }
        puts("");
    }


    return 0;
}
View Code

 2357

#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;
const int maxn = 20000+7;

int n,s,arr[maxn];

int main()
{
    while(~scanf("%d%d",&n,&s))
    {
        for(int i=0;i<n;i++){
            scanf("%d",&arr[i]);
        }
        sort(arr,arr+n);
        int ans=0;
        for(int i=0;i<n;i++){
            ans+=upper_bound(arr+i+1,arr+n,s-arr[i])-arr-i-1;
        }
        printf("%d\n",ans);
    }

    return 0;
}
View Code

 1742

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>

using namespace std;
const int maxn = 1e6+7;

int a[30],b[15];
char str[maxn];

int main()
{
    while(~scanf("%s",str))
    {
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        for(int i=0;i<strlen(str);i++){
            if(str[i]>='0'&&str[i]<='9'){
                b[str[i]-'0']++;
            }
            else{
                a[str[i]-'a']++;
            }
        }
        int max_pos=0,flag=1,max_val=0;
        for(int i=0;i<26;i++){
            if(a[i]>max_val){
                max_val=a[i];
                max_pos=i;
            }
        }
        for(int i=0;i<10;i++){
            if(b[i]>max_val){
                max_val=b[i];
                max_pos=i;
                flag=2;
            }
        }
        if(flag==1){
            printf("%c %d\n",max_pos+'a',max_val);
        }
        else{
            printf("%c %d\n",max_pos+'0',max_val);
        }
    }

    return 0;
}
View Code

 (20)

 

 

1551

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <queue>

using namespace std;
const int maxn = 105;

struct node
{
    int to,w,next;
}arr[maxn*maxn*2];
int first[maxn],sign,n,in[maxn];

void init()
{
    memset(first,0,sizeof(first));
    memset(in,0,sizeof(in));
    sign=1;
}

void add_edge(int u,int v,int w)
{
    arr[sign].w=w;
    arr[sign].to=v;
    arr[sign].next=first[u];
    first[u]=sign++;
}

void toposort()
{
    queue<int>q;
    for(int i=1;i<=n;i++){
        if(in[i]==0){
            q.push(i);
        }
    }
    int f=1;
    while(!q.empty()){
        int now=q.front();
        q.pop();

        if(f){
            printf("%d",now);
            f=0;
        }
        else{
            printf(" %d",now);
        }
        for(int i=first[now];i;i=arr[i].next){
            in[arr[i].to]--;
            if(in[arr[i].to]==0){
                q.push(arr[i].to);
            }
        }
    }
    puts("");
}

int main()
{
    int u,v,w;
    while(~scanf("%d",&n))
    {
        init();
        for(int i=1;i<=n;i++){
            while(~scanf("%d",&v)&&v){
                add_edge(i,v,1);
                in[v]++;
            }
        }
        toposort();
    }

    return 0;
}
View Code

 1905

#include <bits/stdc++.h>

using namespace std;

int main()
{
    long long a,b,c;
    while(~scanf("%I64d%I64d%I64d",&a,&b,&c)){
        printf("%I64d\n",min(min(min(2*(a+b),a+b+c),2*(b+c)),2*(a+c)));
    }
    return 0;
}
View Code

 2023  两个等于条件都要写

#include <bits/stdc++.h>

using namespace std;
const int maxn = 10005;

bool checkBig(int a,int b,int c,int d)
{
    if(a>=2*b&&a>=2*c&&a>=2*d)
    {
        return 1;
    }
    return 0;
}

bool checkSmall(int a,int b,int c,int d)
{
    if(a*2<=b&&a*2<=c&&a*2<=d)
    {
        return 1;
    }
    return 0;
}

int main()
{
    string a,b,c,d;
    int la,lb,lc,ld,pos=0,flag=0;
    bool finds=0;
    getline(cin,a);
    getline(cin,b);
    getline(cin,c);
    getline(cin,d);
    la=a.length()-2;
    lb=b.length()-2;
    lc=c.length()-2;
    ld=d.length()-2;
    //printf("%d %d %d %d\n",la,lb,lc,ld);
    if(checkBig(la,lb,lc,ld))
    {
        if(finds)
        {
            puts("C");flag=1;
        }
        finds=1;
        pos=1;
    }
    if(checkSmall(la,lb,lc,ld))
    {
        if(finds)
        {
            puts("C");flag=1;
        }
        finds=1;
        pos=1;
    }
    ///
    if(checkBig(lb,lc,ld,la))
    {
        if(finds)
        {
            puts("C");flag=1;
        }
        finds=1;
        pos=2;
    }
    if(checkSmall(lb,lc,ld,la))
    {
        if(finds)
        {
            puts("C");flag=1;
        }
        finds=1;
        pos=2;
    }
    ///
    if(checkBig(lc,ld,la,lb))
    {
        if(finds)
        {
            puts("C");flag=1;
        }
        finds=1;
        pos=3;
    }
    if(checkSmall(lc,ld,la,lb))
    {
        if(finds)
        {
            puts("C");flag=1;
        }
        finds=1;
        pos=3;
    }
    ///
    if(checkBig(ld,la,lb,lc))
    {
        if(finds)
        {
            puts("C");flag=1;
        }
        finds=1;
        pos=4;
    }
    if(checkSmall(ld,la,lb,lc))
    {
        if(finds)
        {
            puts("C");flag=1;
        }
        finds=1;
        pos=4;
    }
    if(pos&&!flag)
    {
        switch (pos)
        {
        case 1:
            puts("A");
            break;
        case 2:
            puts("B");
            break;
        case 3:
            puts("C");
            break;
        case 4:
            puts("D");
            break;
        }
    }
    else if(!flag){
        puts("C");
    }


    return 0;
}
View Code

 2227

#include <bits/stdc++.h>

using namespace std;
typedef long long ll;

int main()
{
    ll l1,r1,l2,r2,k,ans;
    while(cin>>l1>>r1>>l2>>r2>>k)
    {
        if(l2<l1){
            swap(l1,l2);
            swap(r1,r2);
        }
        if(r1<l2){
            puts("0");
        }
        else{
            if(r2<=r1){
                ans=r2-l2+1;
                if(k<=r2&&k>=l2){
                    ans--;
                }
            }
            else{
                ans=r1-l2+1;
                if(k<=r1&&k>=l2){
                    ans--;
                }
            }
            cout<<ans<<endl;
        }
    }

    return 0;
}
View Code

 *2313

#include <bits/stdc++.h>

using namespace std;
const int maxn = 1005;
int vis[maxn];

int main()
{
    int t,n,m,value;
    while(~scanf("%d",&t))
    {
        while(t--)
        {
            memset(vis,0,sizeof(vis));
            scanf("%d%d",&n,&m);
            for(int i=1;i<=n;i++){
                int ret=0;
                for(int j=1;j<=m;j++){
                    scanf("%d",&value);
                    ret=ret*2+value;
                }
                vis[i]=ret;
            }
            int ans=0;
            for(int i=1;i<=n;i++){
                for(int j=i+1;j<=n;j++){
                    if(vis[i]&vis[j]){
                        ans++;
                    }
                }
            }
            printf("%d\n",ans);
        }
    }

    return 0;
}
View Code