Cod sursa(job #476636)

Utilizator andra23Laura Draghici andra23 Data 11 august 2010 22:27:07
Problema Nivele Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.35 kb
#include<iostream>
#include<fstream>
#include<algorithm>

using namespace std;

int a[50010];

int main(){
    ifstream f("nivele.in");
    ofstream g("nivele.out");
    int n, t, i, j, k, x, val, aval;
    long long anr, nr;
    
    f>>t;
    
    for (k = 1; k <= t; k++){
        f>>n;
        for (i = 1; i <= n; i++)
            f>>a[i]; 
        sort(a+1, a+n+1);
        
        aval = a[1];
        anr = 1<<(aval-1);
        
        i = 1;
        while (i <= n){
            val = a[i];
            while (aval != val){
                anr = anr*2;
                aval++;
            }
            nr = 0;
            while (i <= n && a[i] == val){
                nr++;
                i++;
            }
            if (anr == nr)
                if (i == n+1)
                    g<<"DA"<<'\n';
                else {   
                    g<<"NU"<<'\n';
                    break;
                }
            else    
                if (nr < anr)
                    if (i == n+1)   
                        g<<"NU"<<'\n';
                    else {
                        anr = 2*(anr - nr);
                        aval = a[i];
                    }
                else {
                    g<<"NU"<<'\n'; 
                    break;
                }  
        }   
    }
    
    return 0;
}