Другие языки программирования и технологии
Помогите.Массивы.Язык Си.
Дан массив из N целых чисел. Определить количество инверсий в этом массиве (т.е. таких пар элементов, в которых большее число находится слева от меньшего: xi > xj при i < j).
Что-то вам тут наговорили непонятного :)
#include < stdio.h >
int main()
{
int a[10]={1,5,2,7,9,1,3,0,7,6};
int c=0;
for (int i=1;i<10;i++) if (a[ i ] < a[ i-1 ]) c++;
printf("c=%d", c);
}
#include < stdio.h >
int main()
{
int a[10]={1,5,2,7,9,1,3,0,7,6};
int c=0;
for (int i=1;i<10;i++) if (a[ i ] < a[ i-1 ]) c++;
printf("c=%d", c);
}
Alexanndr Tiscenco
вот, это другое дело )спасибо )только у меня ошибка )
Alexanndr Tiscenco
уже исправила ошибку )
// inversions
// Visual C++ 2010 console application
#include <stdio.h>
#include <time.h>
#include <locale.h>
#include <stdlib.h>
#include <conio.h>
#define N 24
void main()
{
setlocale(LC_CTYPE, "Russian_Russia.1251");
srand((unsigned)time(NULL));
int a[N], count = 0;
for (int n = 0; n < N; n++)
{
a[n] = rand();
if ((n) % 6 == 0) printf("\n");
printf("%d\t", a[n]);
}
printf("\n----------------------------");
for (int n = 0; n < N; n++) if (a[n] < a[n + 1] && (n + 1) <= N) count++;
printf("\n Количество инверсий равно: %d", count);
getch();
}
// Visual C++ 2010 console application
#include <stdio.h>
#include <time.h>
#include <locale.h>
#include <stdlib.h>
#include <conio.h>
#define N 24
void main()
{
setlocale(LC_CTYPE, "Russian_Russia.1251");
srand((unsigned)time(NULL));
int a[N], count = 0;
for (int n = 0; n < N; n++)
{
a[n] = rand();
if ((n) % 6 == 0) printf("\n");
printf("%d\t", a[n]);
}
printf("\n----------------------------");
for (int n = 0; n < N; n++) if (a[n] < a[n + 1] && (n + 1) <= N) count++;
printf("\n Количество инверсий равно: %d", count);
getch();
}
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<string>
#include<vector>
#include<map>
typedef long long i64;
using namespace std;
class FenwickTree{
public:
vector<int> data;
FenwickTree(int n) : data(n+1, 0)
{
}
inline void add(int numb,int val){
for(int i = numb;i<data.size();>+=val;
}
}
inline int sum_p(int end){
int res=0;
for(int i = end;i>0;i-=i&(-i)){
res+=data;
}
return res;
}
inline int sum_d(int l, int r){
return sum_p(r)-sum_p(l-1);
}
};
//int numb[200000],inv[200000];
int main(){
int t;
scanf("%d",&t);
for(int co=0;co<t;co++){> numbs(numb_t);
for (int i=0;i<numb_t;i++){>);
}
vector<int> numb_s=numbs;
sort(numb_s.begin(),numb_s.end());
map<int,int> rev;
for (int i=0;i<numb_t;i++)>] = i+1;
for (int i=0;i<numb_t;i++)> = rev[numbs];
FenwickTree x(numb_t);
for (int i=0;i<numb_t;i++){>;
res+=x.sum_p(cur - 1);
x.add(cur,1);
}
printf("%lld\n", res);
}
return 0;
}
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<string>
#include<vector>
#include<map>
typedef long long i64;
using namespace std;
class FenwickTree{
public:
vector<int> data;
FenwickTree(int n) : data(n+1, 0)
{
}
inline void add(int numb,int val){
for(int i = numb;i<data.size();>+=val;
}
}
inline int sum_p(int end){
int res=0;
for(int i = end;i>0;i-=i&(-i)){
res+=data;
}
return res;
}
inline int sum_d(int l, int r){
return sum_p(r)-sum_p(l-1);
}
};
//int numb[200000],inv[200000];
int main(){
int t;
scanf("%d",&t);
for(int co=0;co<t;co++){> numbs(numb_t);
for (int i=0;i<numb_t;i++){>);
}
vector<int> numb_s=numbs;
sort(numb_s.begin(),numb_s.end());
map<int,int> rev;
for (int i=0;i<numb_t;i++)>] = i+1;
for (int i=0;i<numb_t;i++)> = rev[numbs];
FenwickTree x(numb_t);
for (int i=0;i<numb_t;i++){>;
res+=x.sum_p(cur - 1);
x.add(cur,1);
}
printf("%lld\n", res);
}
return 0;
}
Alexanndr Tiscenco
оО, чтоб я тут ещё что понимала )
у меня даже в программе не открывается )
спасибо за помощь =)
у меня даже в программе не открывается )
спасибо за помощь =)
Похожие вопросы
- Двумерный массив. Язык Си.
- Помогите пожалуйста. Язык Си работа с файлами
- Помогите с массивом и сортировкой методом пузырька в языке Си! Прогу надо сдать в пятницу срочно, не знаю как начать!
- Язык си, двухмерный массив и функция.
- помогите пожалуйста проверить код на языке си, программа работает неверно - не выдает сумму массива Z
- Язык Си: В одномерном массиве, состоящем из n вещественных элементов, вычислить: номер максимального по модулю элемента
- Язык СИ. Массивы Ребят, как на Си написать сортировку массива от меньшего к большему?
- Поменять местами первый и последний отрицательные элементы массива B (18). (Язык Си) (Язык Си)
- Язык Си|Будет ли ошибкой, если я буду увеличивать размер массива по мере ввода в него?
- Язык си, не понял несколько моментов по массивам и строкам